package com.cskaoyan.methodarg;


/*

  总结一下：
      在java语言中，不管参数的类型，是数组类型，基本数据类型，实际参数和形式参数进行值传递的方式只有一种：
      实际参数的值   复制一份 赋值给形式参数

     参数类型是基本数据类型              值传递
     参数类型是引用数据类型(比如数组)    引用传递


      所以，实参的值，其实就有两份，调用方法中一份(实际参数)，被调用方法中一份(形式参数)
      1. 当方法的参数是基本数据类型的参数的时候，
         参数有两份，同时参数对应的数据的值，也有两份

      2. 当方法的参数是引用数据类型的时候
         参数值有两份，但是两个数组类型引用变量，对应的值(数组)，只有一个


 */
public class Demo {

    public static void main(String[] args)
    {
//        int a = 10;
//        int b = 20;
//        System.out.println("a:"+a+",b:"+b);
//        change(a,b);
//        System.out.println("a:"+a+",b:"+b);
        int[] arr = {1,2,3,4,5};
        change(arr);
        System.out.println(arr[1]);
    }

    public static void change(int a,int b) {
        System.out.println("a:"+a+",b:"+b);
        a = b;
        b = a + b;
        System.out.println("a:"+a+",b:"+b);
    }

    public static void change(int[] arr) {
        for (int x = 0; x < arr.length; x++) {
            if (arr[x] % 2 == 0) {
                arr[x] *= 2;
            }
        }
    }

}
